#include <iostream>  
using namespace std;  
  
const int MAX_SIZE = 100; // 栈的最大容量  
  
class Stack {  
private:  
    int data[MAX_SIZE]; // 用数组存储栈元素  
    int top_index; // 栈顶元素的索引  
public:  
    Stack() { // 构造函数  
        top_index = -1; // 初始化栈为空  
    }  
    bool is_empty() { // 判断栈是否为空  
        return top_index == -1;  
    }  
    bool is_full() { // 判断栈是否已满  
        return top_index == MAX_SIZE - 1;  
    }  
    void push(int value) { // 入栈操作  
        if (is_full()) { // 如果栈已满，无法入栈，直接返回  
            cout << "Stack is full!" << endl;  
            return;  
        }  
        data[++top_index] = value; // 入栈操作，同时更新栈顶元素的索引  
    }  
    int pop() { // 出栈操作  
        if (is_empty()) { // 如果栈为空，无法出栈，直接返回-1  
            cout << "Stack is empty!" << endl;  
            return -1;  
        }  
        return data[top_index--]; // 出栈操作，同时更新栈顶元素的索引  
    }  
    int get_top() { // 获取栈顶元素  
        if (is_empty()) { // 如果栈为空，直接返回-1  
            cout << "Stack is empty!" << endl;  
            return -1;  
        }  
        return data[top_index]; // 返回栈顶元素的值，但不更新栈顶元素的索引  
    }  
};